package es.albarregas.dao;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

import es.albarregas.modelo.Cliente;

public class ClienteDAO extends ConexionDAO {
	
	private static final String INSERT_STATEMENT = 
		"insert into clientes " +
		"(codigo,nombre,apellido,NIF_NIE,direccion,telefono," +
		"fechaNacimiento,fechaIntro,Provincia,Municipio,CodigoPostal) values(?,?,?,?,?,?,?,?,?,?,?);";
	private static final String UPDATE_STATEMENT = 
		"update clientes set Nombre=?,Apellido=?,Telefono=? where Codigo=?";
	
	public void crearCliente(Cliente cliente) {
		try {
			getConexion();
			estamento = conexion.createStatement();
			resultado = estamento.executeQuery("select max(Codigo) as ultimo from usuarios");
			int key = 0;
			while(resultado.next()){
				key = resultado.getInt("ultimo");
			}
			preparada = conexion.prepareStatement(INSERT_STATEMENT);
			preparada.setInt(1, key);
			preparada.setString(2, cliente.getNombre());
			preparada.setString(3, cliente.getApellidos());
			preparada.setString(4, cliente.getNifNie());
			preparada.setString(5, cliente.getDireccion());
			preparada.setString(6, cliente.getTelefono());
			String[] f = cliente.getFechaNacimiento().split("-");
			String cadenaFecha = f[0] + "-" + f[1] + "-" + f[2]; 
			preparada.setString(7, cadenaFecha.toString());
						
			Calendar calendario = GregorianCalendar.getInstance();
			java.util.Date fecha = calendario.getTime();
			SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
			preparada.setString(8, formatoDeFecha.format(fecha));
			preparada.setString(9, cliente.getProvincia());
			preparada.setString(10, cliente.getLocalidad());
			preparada.setString(11, cliente.getCodigoPostal());
			preparada.executeUpdate();
		} catch(SQLException ex){
			ex.printStackTrace();
		} finally {
			cerrar();
		}
		
	}

	public void actualizarCliente(Cliente cliente){
		try {
			getConexion();
			preparada = conexion.prepareStatement(UPDATE_STATEMENT);
			preparada.setString(1, cliente.getNombre());
			preparada.setString(2, cliente.getApellidos());
			preparada.setString(3, cliente.getTelefono());
			preparada.setInt(4, cliente.getCodigo());
			preparada.executeUpdate();
		} catch(SQLException ex){
			ex.printStackTrace();
		} finally {
			cerrar();
		}
	}

	
}
